/**
 * Logo 图片辅助函数
 * 提供多种Logo获取方案（国内可用）
 */

/**
 * 从域名自动生成Logo URL（国内可用版本）
 */
export function getLogoFromDomain(url: string, size: number = 128): string {
  try {
    const domain = new URL(url).hostname;
    const toolName = domain.split('.')[0]; // 提取主域名作为名称
    
    // 方案1: IconHorse (国内可访问，支持多种尺寸)
    return `https://icon.horse/icon/${domain}`;
    
    // 方案2: UI Avatars (国内稳定，文字头像)
    // return `https://ui-avatars.com/api/?name=${encodeURIComponent(toolName)}&size=${size}&background=random&color=fff&bold=true`;
    
    // 方案3: 备选 - 使用工具名称生成渐变背景头像
    // const colors = ['0D8ABC', '2E7D32', 'F57C00', '7B1FA2', 'C62828', '00897B'];
    // const bgColor = colors[toolName.charCodeAt(0) % colors.length];
    // return `https://ui-avatars.com/api/?name=${encodeURIComponent(toolName)}&size=${size}&background=${bgColor}&color=fff&bold=true`;
  } catch (error) {
    // 如果URL无效，返回占位图
    return `https://ui-avatars.com/api/?name=${encodeURIComponent('Tool')}&size=${size}&background=6366F1&color=fff`;
  }
}

/**
 * 从工具名称生成占位Logo（美化版）
 */
export function getPlaceholderLogo(name: string, size: number = 128): string {
  // 使用渐变色彩方案，根据首字母生成不同颜色
  const colors = [
    '6366F1', // Indigo
    '8B5CF6', // Purple
    'EC4899', // Pink
    'F59E0B', // Amber
    '10B981', // Green
    '3B82F6', // Blue
    'EF4444', // Red
    '06B6D4', // Cyan
  ];
  
  const firstChar = name.charAt(0).toUpperCase();
  const colorIndex = firstChar.charCodeAt(0) % colors.length;
  const bgColor = colors[colorIndex];
  
  return `https://ui-avatars.com/api/?name=${encodeURIComponent(name)}&size=${size}&background=${bgColor}&color=fff&bold=true&font-size=0.4`;
}

/**
 * 组合方案：优先使用已上传的，否则自动生成
 */
export function getToolLogo(toolUrl: string, toolName: string, uploadedLogo?: string): string {
  if (uploadedLogo && !uploadedLogo.startsWith('/uploads/tools/')) {
    return uploadedLogo; // 已经是完整URL
  }
  
  // 自动从域名获取
  return getLogoFromDomain(toolUrl);
}

/**
 * 多策略Logo获取（包含降级方案）
 * 策略：IconHorse -> UI Avatars
 */
export function getLogoWithFallback(url: string, name: string, size: number = 128): string {
  try {
    const domain = new URL(url).hostname;
    
    // 主要策略：IconHorse（国内可访问，返回真实favicon）
    const iconHorseUrl = `https://icon.horse/icon/${domain}`;
    
    // 备用策略：如果需要，可以在前端监听onerror事件切换到UI Avatars
    return iconHorseUrl;
  } catch (error) {
    // URL解析失败，直接使用名称生成
    return getPlaceholderLogo(name, size);
  }
}

